L3-013. 非常弹的球
刚上高一的森森为了学好物理，买了一个“非常弹”的球。虽然说是非常弹的球，其实也就是一般的弹力球而已。森森玩了一会儿弹力球后突然想到，假如他在地上用力弹球，球最远能弹到多远去呢？他不太会，你能帮他解决吗？当然为了刚学习物理的森森，我们对环境做一些简化：

假设森森是一个质点，以森森为原点设立坐标轴，则森森位于(0, 0)点。
小球质量为w/100 千克（kg），重力加速度为9.8米/秒平方（m/s2）。
森森在地上用力弹球的过程可简化为球从(0, 0)点以某个森森选择的角度ang (0 < ang < pi/2) 向第一象限抛出，抛出时假设动能为1000 焦耳（J）。
小球在空中仅受重力作用，球纵坐标为0时可视作落地，落地时损失p%动能并反弹。
地面可视为刚体，忽略小球形状、空气阻力及摩擦阻力等。
森森为你准备的公式：

动能公式：E = m * v2 / 2
牛顿力学公式：F = m * a
重力：G = m * g
其中：
E - 动能，单位为“焦耳”
m - 质量，单位为“千克”
v - 速度，单位为“米/秒”
a - 加速度，单位为“米/秒平方”
g - 重力加速度
输入格式：

输入在一行中给出两个整数：1 <= w <= 1000 和 1 <= p <= 100，分别表示放大100倍的小球质量、以及损失动力的百分比p。

输出格式：

在一行输出最远的投掷距离，保留3位小数。

输入样例：
100 90
输出样例：
226.757

分析：
因为E=1/2mv^2，所以v^2=2E/m
当v分解为垂直方向的vsinθ和水平方向的vcosθ，所以水平方向的v为vsinθ，t为vcosθ/g，抛到最高点时通过的路程为s = vt = vsinθvcosθ/g，落下来同样相同的距离，s = 2vsinθvcosθ/g
因为2sinθvcosθ=sin2θ，sin2θ的最大值为1，即2θ=90°，θ=45°的时候s取得最大值～
这样s = v^2/g
又因为v^2=2E/m，在代码中v^2为变量v2，所以v2 = 2 * 1000 * 100 / w，即E = 1000， m = w/100
每次将v2/g 即v2 / 9.8的结果累加到s中，可以得到s为最后求得的总距离，每一次while循环，都要将v2损失百分比p，直到v2足够小（这里取0.000001可以通过所有测试用例，如果是0.00001会有一个测试点答案错误）的时候退出循环～

#include <cstdio>
int main() {
    double w, p, v2, s = 0;
    scanf("%lf%lf", &w, &p);
    v2 = 2 * 1000 * 100 / w;
    while (v2 > 0.000001) {
        s += v2 / 9.8;
        v2 *= (100 - p) * 0.01;
    }
    printf("%.3f", s);
    return 0;
}
